package behaviour.memento;

/**
 * 备忘录模式
 * 保存一个对象的某个状态，以便在适当的时候恢复对象
 * 客户不与备忘录类耦合，与备忘录管理类耦合
 * <p>
 * 1、为了符合迪米特原则，还要增加一个管理备忘录的类。
 * 2、为了节约内存，可使用原型模式+备忘录模式。
 *
 * @author yeyangtao created at 2020/7/7 13:51
 */
public class MementoDemo {
    public static void main(String[] args) {
        Originator old = new Originator();
        CareTaker careTaker = new CareTaker();

        old.setState("111");
        careTaker.add(old.saveStateToMemento());
        old.setState("222");
        careTaker.add(old.saveStateToMemento());

        System.out.println("恢复前：" + old);
        System.out.println("第一次状态:" + careTaker.get(0).getState());
        System.out.println("第二次状态:" + careTaker.get(1).getState());
        old.getStateFromMemento(careTaker.get(0));
        System.out.println("恢复后:" + old);
    }
}
